Aspects of this disclosure are generally related to data storage systems. Data storage systems are used to maintain relatively large data sets and support a relatively large number of concurrent users. The basic building blocks of a data storage system may include storage arrays or storage server clusters. Examples of storage arrays, which will be used herein for the purposes of explanation, include the Symmetrix and VMAX families of storage array products of EMC Corporation. Each storage array typically includes multiple physical storage devices which are used to present logical storage devices to applications running on host devices. Different types of physical storage devices may be used, and those storage devices may be organized in hierarchical tiers based on technology type, where different technology types are associated with different levels of performance. Typically, the hierarchical tier on which an extent of data is stored is selected as a function of predicted activity of that extent. For example, recent access activity may be used as a predictor of future access activity (or future IO service demands). Logical storage devices created for an application may be organized in a storage group. The storage group may be associated with SLOs (service level objectives) which indicate the demands for quality of service measured by response time of IO access.
The virtualization layer associated with the relationship between the logical storage devices and the physical storage devices enables extents of a single logical device to be hosted by different physical storage devices. Moreover, those physical storage devices may be associated with different tiers, and extents may be dynamically moved between physical storage devices. Dynamic changes associated with the relationship between the extents and the underlying hosting storage media are transparent to the applications that read or write the extents. Although response time associated with the extents may change, the applications are not disrupted.